Many communications solutions implement a synchronous communication model—requiring a dedicated logical connection between sender and receiver for the communication to succeed. For example, Web browser HTTP requests and responses are synchronous—the requesting Web browser typically sends a request and waits for a response from a Web server before continuing with any other processing. The initial HTTP request includes a Uniform Resource Locator (URL) specifying the Web page that the administrator of the Web browser requires. An Internet administrator may initiate a conversational flow of requests and responses, such as when enquiring about and then ordering a product, and it may be necessary for one or more of the flows to be encrypted to protect the administrator's credit card details or other personal information. The conventional approach to providing such security uses Secure Sockets Layers (SSL), which provides all-or-nothing encryption across a communication link but does not provide end-to-end security between application programs.
Asynchronous communication models are also well known, such as implemented by a number of commercially available message-oriented middleware products. Middleware products support communications between application programs across a network. These include IBM Corporation's MQSeries (MQSeries is a registered trademark of International Business Machines Corporation) and WebSphere (WebSphere is a registered trademark of International Business Machines Corporation) MQ family of messaging products, which use asynchronous messaging via queues. A sender application program issues a “putMessage” command to send a message to a target queue, and MQSeries queue manager programs handle the complexities of transferring the message from the sender to the target queue, which may be remotely located across a heterogeneous computer network. The MQSeries queue manager programs implement transactional assured message delivery even when the destination application is not available at the time the message was sent. The target queue is a local input queue for another application program, which retrieves the message from its input queue by issuing a “getMessage” command asynchronously from the send operation. The receiver application program then performs its processing on the message, and may generate further messages.
IBM Corporation's MQSeries Everyplace product is an example of a messaging product which implements asynchronous communications as described above as well as a form of synchronous communication. MQSeries Everyplace provides messaging functionality to laptop computers, PDAs, phones, point-of-sale machines etc. A local MQSeries Everyplace queue manager can (1) Put a message to a local queue and then return control to the sending application (the local queue may be a proxy for a remote queue, with asynchronous message transfer between the local proxy and the remote destination queue being trusted to the queue manager programs), or (2) it can implement a putMessage operation to place the message on a remote queue and only return control when the message is confirmed to have arrived at the target queue. In both cases, a putMessage operation is followed by a subsequent getMessage operation to take the message from the target queue, and so the overall application-to-application communication is asynchronous. IBM's MQSeries Everyplace product has been developed using object-oriented (OO) programming techniques. (IBM, WebSphere, MQSeries and Everyplace are trademarks of International Business Machines Corporation).
As is well known in OO programming, objects are instances of classes, which are abstract definitions of the characteristic attributes, and functions (known as methods) of a named data type which represents a real world entity. Thus each class is an abstraction of a real world entity. An object includes attribute data and the class functions (methods), which operate on that data. The data and class functions are tightly bound together within the object, and this integration of data and class functions within an object is known as encapsulation. Another important concept of OO programming is inheritance—that is, classes can implement a hierarchy in which all descendant classes of a base class include all of its characteristic attributes and class functions, and add additional attributes or class functions.